package code.class5;

/**
 * 最大公约数、同余原理
 */
public class Code01_gcd {

    public static void main(String[] args) {
        int a = 50;
        int b = 30;
        int gcd = gcd(a, b);
        System.out.println("gcd = " + gcd);
        long lcm = lcm(a, b);
        System.out.println("lcm = " + lcm);
    }


    /**
     * 最大公约数
     */
    public static int gcd(int a, int b) {
        /**
         * a  b  -> b a%b -> ...
         * 50 30 -> 30 |20| -> 20 |10| -> 10 |10| -> 10 |0|
         * 当b==0时，就是最大公约数
         */
        return b == 0 ? a : gcd(b, a % b);
    }

    /**
     * 最小公倍数
     * 最小公倍数 = (a / 最大公约数) * b
     */
    public static long lcm(int a, int b) {
        return  (a / gcd(a, b)) * b;
    }
}
